package Principal;

import java.math.BigDecimal;
import java.util.List;

public class EventoMeioOcupado extends Evento{

	public EventoMeioOcupado(BigDecimal _tempoExecucao, Host _host, HistoriaSimulacao _historiaSimulacao, Estatistica _estatistica, List<Host> _hostsSistema) {
		super(_tempoExecucao, _host, _historiaSimulacao, _estatistica, _hostsSistema);		
	}

	@Override
	public void executar() {
		
		if(verbose){
			System.out.printf("Evento Meio Ocupado. Host: %d. Tempo: %s us.\n", getNumeroHost(), tempoExecucao.setScale(4, BigDecimal.ROUND_HALF_EVEN).toString());
		}
		
		// Verifico se o host esta transmitindo
		if (host.isTransmitindo()){
			
			// Neste caso houve colisao
			// Incremento o numero de colisoes 
			host.incrementarColisao();
			
			// Gero um evento para tratar a colisao
			Evento geraColisao = new EventoColisao(tempoExecucao, host, historiaSimulacao, estatistica, hostsSistema);
			historiaSimulacao.adicionarEvento(geraColisao);
		}
		else{
			// Armazeno as informacoes necessarias para o calculo da utilizacao
			if(getNumeroHost() == 1)
			{
				//System.out.printf("Host 1 meio ocupado. Tempo: %s us.\n", tempoExecucao.setScale(4, BigDecimal.ROUND_HALF_EVEN).toString());
				
				estatistica.inicioTx(host, tempoExecucao);
			}
			
		}
		// Indico que o meio esta ocupado
		host.setMeioOcupado();		
	}

}
